package com.meixun.xuanke.course.util;
import javax.servlet.http.HttpServletRequest;

public class IPaddress {

	public static String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for"); 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
			ip = request.getHeader("Proxy-Client-IP"); 
		} 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
			ip = request.getHeader("WL-Proxy-Client-IP"); 
		} 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
			ip = request.getRemoteAddr(); 
		}
		
		//对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割    
	    if(ip!=null && ip.length()>15){ //"***.***.***.***".length() = 15    
	         if(ip.indexOf(",")>0){    
	        	 ip = ip.substring(0,ip.indexOf(","));    
	         }
	    }
		return ip;
	}
	
	
	public static String getRemoteAddrIp(HttpServletRequest request) {
        String ipFromNginx = getHeader(request, "X-Real-IP");
        String Host = getHeader(request, "Host");
        return ipFromNginx.equals("")||ipFromNginx==null ? request.getRemoteAddr() : ipFromNginx+"+"+Host;
    }


    private static String getHeader(HttpServletRequest request, String headName) {
        String value = request.getHeader(headName);
        return !(null==value||("").equals(value)) && !"unknown".equalsIgnoreCase(value) ? value : "";
    }


}
